﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace AdatbazisProjekt
{
	public partial class AlkatreszTulajdonsagok : Form
	{
		AlkatreszekModositasaTorlese parent;
		DataAlkatreszek alk;
		string regiErtek1; // ezekben az adattagokban taroljuk a modositasok elotti tulajdonsagok ertekeit
		string regiErtek2;// erre azert van szukseg hogy majd a modositasok utan talaljuk meg a megfelelo modositando sorokat
		string regiErtek3;
		string comp;
		bool Err;

		public AlkatreszTulajdonsagok(AlkatreszekModositasaTorlese p,string component)
		{
			alk = new DataAlkatreszek(ref Err);
			parent = p;
			InitializeComponent();
			gyartoFeltolt();
			alkatreszComboFeltolt(component);
			comp = component;
			AlkatreszNevLabel.Text = comp;
			switch (comp) // switchnek koszonhetoen az adott alkatresznek megfelelo mezok es feliratok jelennek meg majd a formon
			{
				case "Processzorok":
					Tulajdonsag1Label.Text = "Teljesitmeny:";
					Tulajdonsag2Label.Text = "Magok Szama:";
                    Tulajdonsag3Label.Text = "Szalak Szama:";
					Ertek1TextBox.Text = alk.GetComponentProperties("Processzorok", "Teljesitmeny", AlkatreszNevComboBox.SelectedItem.ToString());
					Ertek2TextBox.Text = alk.GetComponentProperties("Processzorok", "MagSzam", AlkatreszNevComboBox.SelectedItem.ToString());
                    Ertek3TextBox.Text = alk.GetComponentProperties("Processzorok", "ThreadSzam", AlkatreszNevComboBox.SelectedItem.ToString());
					regiErtek1 = Ertek1TextBox.Text;
					regiErtek2 = Ertek2TextBox.Text;
					regiErtek3 = Ertek3TextBox.Text;
					break;

				case "Merevlemezek":
					Tulajdonsag2Label.Visible = false;
					Ertek2TextBox.Visible = false;
                    Ertek3TextBox.Visible = false;
                    Tulajdonsag3Label.Visible = false;
					Tulajdonsag1Label.Text = "Kapacitas";
					Ertek1TextBox.Text = alk.GetComponentProperties("Merevlemezek", "Kapacitas", AlkatreszNevComboBox.SelectedItem.ToString());
					regiErtek1 = Ertek1TextBox.Text;
					break;

                case "RAM":
                    Tulajdonsag3Label.Visible = false;
                    Ertek3TextBox.Visible = false;
                    Tulajdonsag1Label.Text = "Meret";
                    Ertek1TextBox.Text = alk.GetComponentProperties("RAM", "Meret", AlkatreszNevComboBox.SelectedItem.ToString());
                    Tulajdonsag2Label.Text = "Tipus                DDR";
                    Ertek2TextBox.Text = alk.GetComponentProperties("RAM", "Tipus", AlkatreszNevComboBox.SelectedItem.ToString());
					regiErtek1 = Ertek1TextBox.Text;
					regiErtek2 = Ertek2TextBox.Text;
					break;
                case "Videokartyak":
                    Tulajdonsag2Label.Visible = false;
                    Ertek2TextBox.Visible = false;
                    Tulajdonsag3Label.Visible = false;
                    Ertek3TextBox.Visible = false;
                    Tulajdonsag1Label.Text = "Teljesitmeny";
                    Ertek1TextBox.Text = alk.GetComponentProperties("VideoKartyak", "Teljesitmeny", AlkatreszNevComboBox.SelectedItem.ToString());
					regiErtek1 = Ertek1TextBox.Text;
					break;
                case "Kepernyok":
                    Tulajdonsag2Label.Visible = false;
                    Ertek2TextBox.Visible = false;
                    Tulajdonsag3Label.Visible = false;
                    Ertek3TextBox.Visible = false;
                    Tulajdonsag1Label.Text = "Atmero";
                    Ertek1TextBox.Text = alk.GetComponentProperties("Kepernyok", "Atmero", AlkatreszNevComboBox.SelectedItem.ToString());
					regiErtek1 = Ertek1TextBox.Text;
					break;
			}
		}


		private void gyartoFeltolt() // lekerdezi az osszes gyarto ami jelenleg az adatbazisban van es feltolti veluk  combo-t
		{
			GyartoComboBox.DataSource = alk.GetGyartok(ref Err);
		}

		private void alkatreszComboFeltolt(string component) //feltolti a comboboxot az alkatreszek neveivel
		{
		    AlkatreszNevComboBox.DataSource = alk.GetComponentName(component, ref Err);
		}

		private void AlkatreszTulajdonsagok_Load(object sender, EventArgs e)
		{

		}

		private void AlkatreszNev_comboBox_SelectedIndexChanged(object sender, EventArgs e) // amennyiben uj alkatreszt valasztunk megjelennek az o tulajdonsagainak ertekei a textboxokban
		{
			switch (comp)
			{
				case "Processzorok":
					Ertek1TextBox.Text = alk.GetComponentProperties(comp, "Teljesitmeny", AlkatreszNevComboBox.SelectedItem.ToString());
					Ertek2TextBox.Text = alk.GetComponentProperties(comp, "MagSzam", AlkatreszNevComboBox.SelectedItem.ToString());
                    Ertek3TextBox.Text = alk.GetComponentProperties("Processzorok", "ThreadSzam", AlkatreszNevComboBox.SelectedItem.ToString());
                    break;
				case "Merevlemezek":
					Ertek1TextBox.Text = alk.GetComponentProperties(comp, "Kapacitas", AlkatreszNevComboBox.SelectedItem.ToString());
					break;
                case "RAM":
                    Ertek1TextBox.Text = alk.GetComponentProperties("RAM", "Meret", AlkatreszNevComboBox.SelectedItem.ToString());
                    Ertek2TextBox.Text = alk.GetComponentProperties("RAM", "Tipus", AlkatreszNevComboBox.SelectedItem.ToString());
                    break;
                case "Videokartyak":
                    Ertek1TextBox.Text = alk.GetComponentProperties("VideoKartyak", "Teljesitmeny", AlkatreszNevComboBox.SelectedItem.ToString());
                    break;
                case "Kepernyok":
                    Ertek1TextBox.Text = alk.GetComponentProperties("Kepernyok", "Atmero", AlkatreszNevComboBox.SelectedItem.ToString());
                    break;
			}
		}

        private void MegseButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ModositButton_Click(object sender, EventArgs e) // meghivja az alkatreszeknek megfelelo frisiteseket es megadja a megfelelo ertekeket parameterkent
        {
            switch (comp)
            {
                case "Processzorok":
                    alk.AlkatreszFrissites("Processzorok", AlkatreszNevComboBox.SelectedItem.ToString(), "Teljesitmeny", "MagSzam","ThreadSzam", Ertek1TextBox.Text, Ertek2TextBox.Text, Ertek3TextBox.Text,"GHz","Db","Db",regiErtek1,regiErtek2,regiErtek3, GyartoComboBox.SelectedItem.ToString(), ref Err);
                    break;
                case "Merevlemezek":
                    alk.AlkatreszFrissites("Merevlemezek", AlkatreszNevComboBox.SelectedItem.ToString(), "Kapacitas", "","", Ertek1TextBox.Text, "","","GB","","",regiErtek1,"","", GyartoComboBox.SelectedItem.ToString(), ref Err);
                    break;
                case "RAM": 
                    alk.AlkatreszFrissites("RAM", AlkatreszNevComboBox.SelectedItem.ToString(), "Meret", "Tipus","", Ertek1TextBox.Text, Ertek2TextBox.Text,"","MB","DDR","",regiErtek1,regiErtek2,"", GyartoComboBox.SelectedItem.ToString(), ref Err);
                    break;
                case "Videokartyak":
                    alk.AlkatreszFrissites("VideoKartyak", AlkatreszNevComboBox.SelectedItem.ToString(), "Teljesitmeny", "", "", Ertek1TextBox.Text, "", "","MB","","",regiErtek1,"","",GyartoComboBox.SelectedItem.ToString(), ref Err);
                    break;
                case "Kepernyok":
                    alk.AlkatreszFrissites("Kepernyok", AlkatreszNevComboBox.SelectedItem.ToString(), "Atmero", "", "", Ertek1TextBox.Text, "", "","Inch","","",regiErtek1,"","", GyartoComboBox.SelectedItem.ToString(), ref Err);
                    break;
            }
            if (Err)
            {
                MessageBox.Show("A modositas sajnos sikertelen volt !");
            }
            else
            {
                MessageBox.Show("A modositas sikeresen el lett vegezve!");
                this.Close();
            }
        }

        private void TorolButton_Click(object sender, EventArgs e)
        {
			// torlest vegzi el amennyiben visszaigazoljuk h tenleg torolni akarjuk az alkatreszzt es a hozza kapcsolodo adatokat
            if (MessageBox.Show("FIGYELEM: Ha torli ezt az alkatreszt azzal torlodik minden olyan termek melybe ez az alkatresz volt beszerelve es torlodik minden olyan vasarlas olyan termekre vonatkozott ami ezzel az alkatresszel volt szerelve. Biztos hogy torolni szeretne az alkatreszt? ", "Torles!", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (comp == "Videokartyak" || comp == "Kepernyok") // mivel kenytelenek voltunk trigert is irni a projektbe ezert van ez a dontes, mivel ezt a ket alkatreszt trigerek segitsegevel lehet torolni
                {
                    alk.TorlesTrigerrel(comp, AlkatreszNevComboBox.SelectedItem.ToString(), ref Err);
                    alkatreszComboFeltolt(comp);
                }
                else
                {
                    alk.DeleteComponent(comp, AlkatreszNevComboBox.SelectedItem.ToString(), ref Err);
                    alkatreszComboFeltolt(comp);
                }
                if (Err)
                {
                    MessageBox.Show("Sajnos a torles sikertelen volt!");
                }
                else
                {
                    MessageBox.Show("A torles sikeresen vegre lett hajtva");
                }
            }

        }
	}
}
